package com.example.invoicingsystem.utils;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class GeneratorDisplay {

    boolean overwrite=true;//是否启动逆向工程工具
    /**
     * 启动mybatis逆向生成工具
     */
    public void generator(String pathname) throws Exception{
        List<String> warnings=new ArrayList<String>();
        //指定逆向工程配置文件
        /**
         * Configuration.xml文件的路径
         */
        File configFile=new File(pathname);
        System.out.println(configFile.getAbsolutePath());
        /**
         * 检查Configuration.xml文件的格式是否错误
         */
        ConfigurationParser configurationParser=new ConfigurationParser(warnings);
        /**
         * 解析Configuration.xml文件的内容
         */
        Configuration configuration=configurationParser.parseConfiguration(configFile);
        DefaultShellCallback defaultShellCallback=new DefaultShellCallback(overwrite);//设置是否执行回调函数
        MyBatisGenerator myBatisGenerator=new MyBatisGenerator(configuration,defaultShellCallback,warnings);
        myBatisGenerator.generate(null);
        for(String warning:warnings){
            System.out.println(warning);
        }
    }

    public static void main(String[] args) throws Exception{
        GeneratorDisplay generatorDisplay=new GeneratorDisplay();
        generatorDisplay.generator("src/main/resources/generatorConfig.xml");

    }
}
